From: Jasper St. Pierre Date: Wed, 17 Jul 2013 06:33:09 +0000 (-0400) Subject: system: Add an orientation lock action button X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3775 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e76bcce3bb6d74e59a0ef9c14e8ef34ec70f7334;p=gnome-shell.git system: Add an orientation lock action button https://bugzilla.gnome.org/show_bug.cgi?id=705845 --- diff --git a/js/ui/status/system.js b/js/ui/status/system.js index d1ec3e706..a4674c7f0 100644 --- a/js/ui/status/system.js +++ b/js/ui/status/system.js @@ -50,6 +50,7 @@ const Indicator = new Lang.Class({ this._screenSaverSettings = new Gio.Settings({ schema: SCREENSAVER_SCHEMA }); this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA }); this._privacySettings = new Gio.Settings({ schema: PRIVACY_SCHEMA }); + this._orientationSettings = new Gio.Settings({ schema: 'org.gnome.settings-daemon.peripherals.touchscreen' }); this._session = new GnomeSession.SessionManager(); this._haveShutdown = true; @@ -93,6 +94,21 @@ const Indicator = new Lang.Class({ this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY, Lang.bind(this, this._updateHaveShutdown)); + this._orientationSettings.connect('changed::orientation-lock', + Lang.bind(this, this._updateOrientationLock)); + this._orientationExists = false; + Gio.DBus.session.watch_name('org.gnome.SettingsDaemon.Orientation', + Gio.BusNameWatcherFlags.NONE, + Lang.bind(this, function() { + this._orentationExists = true; + this._updateOrientationLock(); + }), + Lang.bind(this, function() { + this._orentationExists = false; + this._updateOrientationLock(); + })); + this._updateOrientationLock(); + Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated)); this._sessionUpdated(); }, @@ -150,6 +166,14 @@ const Indicator = new Lang.Class({ } }, + _updateOrientationLock: function() { + this._orientationLockAction.visible = this._orientationExists; + + let locked = this._orientationSettings.get_boolean('orientation-lock'); + let icon = this._orientationLockAction.child; + icon.icon_name = locked ? 'rotation-locked-symbolic' : 'rotation-allowed-symbolic'; + }, + _updateLockScreen: function() { let showLock = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY); @@ -209,6 +233,10 @@ const Indicator = new Lang.Class({ this._settingsAction.connect('clicked', Lang.bind(this, this._onSettingsClicked)); hbox.add(this._settingsAction, { expand: true, x_fill: false }); + this._orientationLockAction = this._createActionButton('', _("Orientation Lock")); + this._orientationLockAction.connect('clicked', Lang.bind(this, this._onOrientationLockClicked)); + item.actor.add(this._orientationLockAction, { expand: true, x_fill: false }); + this._lockScreenAction = this._createActionButton('changes-prevent-symbolic', _("Lock")); this._lockScreenAction.connect('clicked', Lang.bind(this, this._onLockScreenClicked)); hbox.add(this._lockScreenAction, { expand: true, x_fill: false }); @@ -231,6 +259,13 @@ const Indicator = new Lang.Class({ app.activate(); }, + _onOrientationLockClicked: function() { + this.menu.itemActivated(); + let locked = this._orientationSettings.get_boolean('orientation-lock'); + this._orientationSettings.set_boolean('orientation-lock', !locked); + this._updateOrientationLock(); + }, + _onLockScreenClicked: function() { this.menu.itemActivated(BoxPointer.PopupAnimation.NONE); Main.overview.hide();